_require       "./General.smi"
_require local "./SMLSharp_ScanChar.smi"
_require local "./String.smi"
_require       "./StringCvt.smi"

structure IntInf =
struct
  val toLarge : intInf -> largeInt
  val fromLarge : largeInt -> intInf
  val toInt : intInf -> int
  val fromInt : int -> intInf
  val precision : int option
  val minInt : intInf option
  val maxInt : intInf option
  val + : intInf * intInf -> intInf
  val - : intInf * intInf -> intInf
  val * : intInf * intInf -> intInf
  val div : intInf * intInf -> intInf
  val mod : intInf * intInf -> intInf
  val quot : intInf * intInf -> intInf
  val rem : intInf * intInf -> intInf
  val compare : intInf * intInf -> General.order
  val < : intInf * intInf -> bool
  val <= : intInf * intInf -> bool
  val > : intInf * intInf -> bool
  val >= : intInf * intInf -> bool
  val ~ : intInf -> intInf
  val abs : intInf -> intInf
  val min : intInf * intInf -> intInf
  val max : intInf * intInf -> intInf
  val sign : intInf -> int
  val sameSign : intInf * intInf -> bool
  val fmt : StringCvt.radix -> intInf -> string
  val toString : intInf -> string
  val scan : StringCvt.radix
             -> (char, 'a) StringCvt.reader
             -> (intInf, 'a) StringCvt.reader
  val fromString : string -> intInf option

  val divMod : intInf * intInf -> intInf * intInf
  val quotRem : intInf * intInf -> intInf * intInf
  val pow : intInf * int -> intInf
  val log2 : intInf -> int
  val orb : intInf * intInf -> intInf
  val xorb : intInf * intInf -> intInf
  val andb : intInf * intInf -> intInf
  val notb : intInf -> intInf
  val << : intInf * word -> intInf
  val ~>> : intInf * word -> intInf
  type int = intInf
end

structure LargeInt = IntInf
